/*

* ------------------------------------------------------------------------
* ------------------------------------------------------------------------
* |     Smart-Shop开源商城系统/ Java商城-首选电商平台系统 请务必保留此注释头信息
* |     开源地址: https://gitee.com/ningbo-qishan/gruul-mall
* ------------------------------------------------------------------------
* ------------------------------------------------------------------------
* |     可正常分享和学习源码,未经授权 不可商用！
* |     商业版中台购买/开源版商业授权 联系技术客服
* |     官网:  https://www.73app.cn/
* ------------------------------------------------------------------------
* ------------------------------------------------------------------------
* |     Copyright (c) 2016-2999 宁波启山智软科技有限公司
* |     版权所有 ,侵权必究！
* ------------------------------------------------------------------------

*/
package com.medusa.gruul.multi.client.account.service.service;

import com.medusa.gruul.common.core.auth.model.enums.WechatAuthType;
import com.medusa.gruul.multi.client.account.api.entity.*;
import com.medusa.gruul.multi.client.account.api.model.dto.WechatOpenUserDTO;

/**
 * @author 张治保
 * date 2021年12月4日
 */
public interface UserService {
    /**
     * 获取商铺用户id
     */
    String getShopUserId(String userId);

    /**
     * 生成默认的账号
     */
    MultiClientAccount newAccount();

    /**
     * 生成默认的账号
     */
    MultiClientAccount newAccount(String mobile);


    /**
     * 生成认证表
     */
    MultiClientAccountAuth newAuth(Long accountId,String userId);

    /**
     * 生成默认的data
     */
    MultiClientAccountData newData(Long accountId,String userId);
    /**
     * 店铺用户关联表
     */
    MultiClientAccountShop newAccountShop(Long accountId,String userId);

    /**
     * 生成wechat open的data
     */
    MultiClientAccountData newData(Long accountId,String userId ,WechatOpenUserDTO user);


    /**
     * 生成微信相关数据
     */
    MultiClientAccountWechat newWechat(Long accountId, String openId, String unionId, WechatAuthType type);

    /**
     * 手机号关联wechat尝试
     */
    MultiClientAccountWechat newWechat(Long accountId,String userId);
}
